
#ifndef _MSXMLTree_
#define _MSXMLTree_

/*#include <string>
#include <windows.h>
#include <list>
#include "Common/Errors.h"
#include "XMLTree.h"
#include <msxml.h>


using namespace std;

//Incapsulate all routines with BSTR, Childs, etc.
class MSXMLNode
{
	private:
		char **val;
	protected:
		IXMLDOMNode *xmlcur;
		int cur;
		//childs
		long chcount;
		IXMLDOMNodeList *children;
		BSTR *chnames;
		char **chvals;
		//attrs
		long attcount;
		IXMLDOMNamedNodeMap *attrs;
		BSTR *attnames;
		char **attvals;
	public:
		//Creates new node and gets all attributes and childs.
		MSXMLNode(IXMLDOMNode *node);
		//Returns child-node with specified name.
		IXMLDOMNode *getChild(const char *name);
		//Returns attr-node with specified name
		IXMLDOMNode *getAttribulte(const char *name);
		//Gets value of the given field (it can be attr or child).
		//Returns true in case of success, false otherwise.
		bool getField(const char *name, const char *&val);
		//Returns next child.
		IXMLDOMNode *getNextChild();
		//Releases all childs and attributes and returns node, which was given in MSXMLNode()
		//Aka Taras Bulbo :)
		IXMLDOMNode *release();
		//Releases all.
		~MSXMLNode();
};

class MSXMLTree :public XMLTree
{
	protected:
		bool isroot;
		IXMLDOMDocument *xmldoc;
		MSXMLNode *cur;
		list<MSXMLNode *> trace;
		//Creates non-root node.
		MSXMLTree(IXMLDOMDocument *xmldoc, MSXMLNode *cur);
	public:
		MSXMLTree();
		//control actions
		virtual void assign(int access, const char *filename);
		virtual void close();
		virtual XMLTree &getSubXMLTree();
		virtual ~MSXMLTree();
		//ro actions
		virtual bool openSection(const char *section);
		virtual bool closeSection();
		virtual const char *getCurrentSection();
		//virtual const char *getCurrentSection();
		virtual bool openNextSection();
		virtual bool getStringAttribute(const char *attr, const char *&val);
};*/

#endif
